/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managedbeans;

import controller.FuncionarioControllerLocal;
import entities.Funcionario;
import exception.FuncionarioExistsException;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.UIData;
import static utils.MessagesUtil.*;

/**
 *
 * @author Sostenes, Thiago, Felipe
 */
@ManagedBean
@RequestScoped
public class FuncionarioBean {

    @EJB
    private FuncionarioControllerLocal funcionarioController;
    private Funcionario funcionario;
    private UIData table;
    private List<Funcionario> funcionarios;
    private boolean editable;

    @PostConstruct
    public void init() {
        funcionario = funcionarioController.createFuncionario();
        editable = false;
    }

    public String create() {
        System.out.println("CREATE");
        try {
            funcionarioController.persist(funcionario);
        } catch (FuncionarioExistsException ex) {
            addErrorMessage(ex, "createFuncionario:cpf");
            return "createFuncionario";
        }
        return "listFuncionarios";
    }

    public String remove() {
        System.out.println("REMOVE");
        funcionarioController.remove((Funcionario) table.getRowData());
        return "listFuncionarios";
    }

    public String update() {
        System.out.println("UPDATE: " + funcionario.getNome());
        funcionarioController.update(funcionario);
        editable = false;
        return "listFuncionarios";
    }

    public String goToEditPage() {
        System.out.println("GOTOEDITPAGE");
        editable = true;
        funcionario = (Funcionario) table.getRowData();
        System.out.println("FUNCIONARIONOME: " + funcionario.getNome());
        return "updateFuncionario";
    }

    public Funcionario getFuncionario() {
        return funcionario;
    }

    public UIData getTable() {
        return table;
    }

    public void setTable(UIData table) {
        this.table = table;
    }

    public List<Funcionario> getFuncionarios() {
        funcionarios = funcionarioController.list();
        return funcionarios;
    }

    public void setFuncionarios(List<Funcionario> funcionarios) {
        this.funcionarios = funcionarios;
    }

    public boolean isEditable() {
        return editable;
    }
}
